package com.usdt.system.service.cp;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.usdt.system.domain.cp.ClueRegisterEntity;
import com.usdt.system.domain.req.BatchTransferOutReqVO;
import com.usdt.system.domain.req.ClueFollowUpReqVO;
import com.usdt.system.domain.req.ClueRegisterListExportReqVO;
import com.usdt.system.domain.req.ClueRegisterReqVO;
import com.usdt.system.domain.req.ClueRegisterUpdateReqVO;
import com.usdt.system.domain.resp.BatchClueRespVO;
import com.usdt.system.domain.resp.ClueRegisterListRespVO;
import com.usdt.system.domain.resp.ClueRegisterRespVO;
import com.usdt.system.domain.resp.ProjectScopRespVO;
import com.usdt.system.domain.resp.SalespersonRespVO;
import com.usdt.system.dto.cp.ClueRegisterListExcelDTO;

/**
 * <p>
 * 线索登记 服务类
 * </p>
 *
 * @author L
 * @since 2025-09-29
 */
public interface ClueRegisterService extends IService<ClueRegisterEntity> {
	
	IPage<ClueRegisterListRespVO> list(String source, String level, String keyWord, String startDate, String endDate, String userId,
			String visitStatus, Integer pageNum, Integer pageSize);

	Boolean insert(ClueRegisterReqVO vo);

	Integer update(Integer id,ClueRegisterReqVO vo);

	ClueRegisterRespVO detail(Integer id);

	Integer updateLevel(Integer id, ClueRegisterUpdateReqVO vo);

	Integer updateVisitTatus(Integer id, ClueRegisterUpdateReqVO vo);

	Integer transferOut(Integer id, ClueRegisterUpdateReqVO vo);

	Integer followUp(Integer id, ClueFollowUpReqVO vo);

	List<SalespersonRespVO> salesperson();

	List<ProjectScopRespVO> projectScop();

	List<ClueRegisterListExcelDTO> listExport(ClueRegisterListExportReqVO vo);

	ClueRegisterRespVO getByPhoneNumber(String keyWord);

	/**根据手机号查询线索
	 * @param phoneNumber
	 * @return
	 */
	List<BatchClueRespVO> getBatchClueByPhoneNumber(String phoneNumber,List<String> deptIds);

	/**批量转出
	 * @param vo
	 * @return
	 */
	Boolean batchTransferOut(BatchTransferOutReqVO vo);

	/**线索批量转出分页列表
	 * @param source
	 * @param userId
	 * @param deptId
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	IPage<BatchClueRespVO> batchClueTransferOutPage(List<String> sourceList, String userId, List<String> deptIds,String phoneNumber, Integer pageNum,
			Integer pageSize);

}
